package DoublePointSeries;

public class MoveZeroesSolution_hot100_283 {
    public void moveZeroes(int[] nums) {
        if (nums.length == 0) {
            return;
        }
        // 设置两个指针
        // 左指针指向当前已经处理好的序列的尾部
        // 右指针指向待处理序列的头部
        int left = 0;
        int right = 0;

        while (right < nums.length) {
            // nums[right] != 0，说明元素需要处理，处理完之后左指针右移
            // [0, 1, 0, 3, 12]
            if (nums[right] != 0) {
                swap(nums, left, right);
                left++;
            }
            // nums[right] == 0，说明是已经处理完毕的元素，不用处理，直接右指针右移
            right++;
        }
    }

    public void swap(int[] nums, int left, int right) {
        int temp = nums[left];
        nums[left] = nums[right];
        nums[right] = temp;
    }
}
